import Vue from 'vue'
import VueRouter from 'vue-router'
import store from "../store"

Vue.use(VueRouter)

//给每个路由设置单独的权限
function checkRoute(url, next) {
    if (store.state.info.menus_url.includes(url)) {
        next()
    } else {
        next("/")
    }
}

// 导出二级路由给form组件
export let IndexRoutes = [{
        path: "menu",
        component: () =>
            import ("../pages/menu/menu.vue"),
        meta: {
            title: "菜单管理"
        },
        beforeEnter(to, from, next) {
            checkRoute("/menu", next)
        }
    },
    {
        path: "role",
        component: () =>
            import ("../pages/role/role.vue"),
        meta: {
            title: "角色管理"
        },
        beforeEnter(to, from, next) {
            checkRoute("/role", next)
        }
    },
    {
        path: "manage",
        component: () =>
            import ("../pages/manage/manage.vue"),
        meta: {
            title: "管理员管理"
        },
        beforeEnter(to, from, next) {
            checkRoute("/manage", next)
        }
    },
    {
        path: "cate",
        component: () =>
            import ("../pages/cate/cate.vue"),
        meta: {
            title: "商品分类"
        },
        beforeEnter(to, from, next) {
            checkRoute("/cate", next)
        }
    },
    {
        path: "specs",
        component: () =>
            import ("../pages/specs/specs.vue"),
        meta: {
            title: "商品规格"
        },
        beforeEnter(to, from, next) {
            checkRoute("/specs", next)
        }
    },
    {
        path: "goods",
        component: () =>
            import ("../pages/goods/goods.vue"),
        meta: {
            title: "商品管理"
        },
        beforeEnter(to, from, next) {
            checkRoute("/goods", next)
        }
    }, {
        path: "banner",
        component: () =>
            import ("../pages/banner/banner.vue"),
        meta: {
            title: "轮播图管理"
        },
        beforeEnter(to, from, next) {
            checkRoute("/banner", next)
        }
    },
    {
        path: "vip",
        component: () =>
            import ("../pages/vip/vip.vue"),
        meta: {
            title: "会员管理"
        },
        beforeEnter(to, from, next) {
            checkRoute("/vip", next)
        }
    },
    {
        path: "seckill",
        component: () =>
            import ("../pages/seckill/seckill.vue"),
        meta: {
            title: "秒杀活动"
        },
        beforeEnter(to, from, next) {
            checkRoute("/seckill", next)
        }
    },
]

const routes = [{
        path: "/login",
        component: () =>
            import ("../pages/login/login.vue")
    },
    {
        path: "/",
        component: () =>
            import ("../pages/index/index.vue"),
        children: [{
                path: "",
                component: () =>
                    import ("../pages/home/home.vue")
            },
            //拷贝IndexRoutes
            ...IndexRoutes
        ]
    },
    {
        path: "*",
        redirect: "/"
    }
]

const router = new VueRouter({
    routes
})


//全局守卫：登录拦截
router.beforeEach((to, from, next) => {
    //前往登录，next
    if (to.path === "/login") {
        next();
        return;
    }
    //前往的不是登录，验证vuex本地存储的数据，有数据，next
    if (store.state.info.token) {
        next()
        return
    }
    //vuex本地存储没有数据，next('/login')
    next("/login")
})

export default router